const path = require('path')
// 配置生成预览界面 使用htmlPlguin插件
const HtmlWebpackPlugin = require('html-webpack-plugin')
const htmlPlguin = new HtmlWebpackPlugin({
  template: './src/index.html',
  filename: 'index.html'
})

// 编译vue的插件 
const VueLoaderPlugin = require('vue-loader/lib/plugin')

module.exports = {
  // 编译模式
  mode: 'development', // development  production
  entry: path.join(__dirname, './src/index.js'),
  // 打包文件的入口 和出口的文件路径
  output: {
    path: path.join(__dirname, './dist'), // 输出文件的存放路径
    filename: 'bundle.js' // 输出文件的名称
  },
  
  // 要用到的插件
  plugins: [htmlPlguin, new VueLoaderPlugin()],
  // 使用打包加载器 配置要被打包的文件的类型 test 要用正则表达式： 
  // use：当前文件要调用那种loader   调用顺序从后向前 还可以接受字符串
  // use: ['style-loader', 'css-loader', 'postcss-loader']   执行顺序：postcss-loader 的打包结果给  css-loader 的打包结果给 style-loader  的打包结果给webpack 最后打包
  module: {
    rules: [
      // postcss-loader 为解决浏览器兼容性问题的插件
      { test: /\.css$/, use: ['style-loader', 'css-loader', 'postcss-loader'] },
      { test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader'] },
      // 注意最后一个打包器
      { test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] },
      // 小于limit值得时候 图片才会被转传成 base64  大于limit的时候不会转换成base64
      { test: /\.jpg|png|gif|bmp|ttf|eot|svg|woff|woff2$/, use: 'url-loader?limit=16941' },
      // 处理js文件的高级语法  不处理  npm安装的 node_modules
      { test: /\.js$/, use: 'babel-loader', exclude: /node_modules/ },
      // 处理vue的打包操作 
      { test: /\.vue$/, use: 'vue-loader' }
    ]
  }
}
